<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>滇境迷踪：历史推断模拟器</title>
    <!-- Font Awesome CDN -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    
    <!-- Google Fonts -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=Noto+Serif+SC:wght@400;500;700&family=ZCOOL+KuaiLe&display=swap" rel="stylesheet">

    <style>
        /* 全局样式与新的色彩系统 */
        :root {
            /* ... (色彩系统与之前版本一致，为简洁省略) ... */
             --color-bg: #282c34; --color-panel-bg: #f5f5dc; --color-panel-border: #c0b28a;
            --color-text-main: #3a3a3a; --color-text-secondary: #5f5f5f; --color-text-keyword: #5a3d2b;
            --color-heading: #6a0d0d; --color-button-primary-bg: linear-gradient(180deg, #9c5e2a 0%, #8b4513 100%);
            --color-button-primary-hover-bg: linear-gradient(180deg, #ad6f3c 0%, #9c5e2a 100%);
            --color-button-primary-shadow: rgba(0, 0, 0, 0.25); --color-accent: #607D8B;
            --color-accent-light: #7B98A8; --color-accent-highlight-bg: rgba(96, 125, 139, 0.15);
            --color-accent-highlight-border: rgba(96, 125, 139, 0.5); --color-active: #E5A742;
            --color-success: #4CAF50; --color-failure: #f44336; --shadow-panel: 0 15px 35px rgba(0,0,0,0.2), 0 5px 15px rgba(0,0,0,0.15);
            --shadow-card: 0 2px 5px rgba(0,0,0,0.1); --shadow-card-hover: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
            --font-main: 'Noto Serif SC', serif; --font-heading: 'Ma Shan Zheng', cursive; --font-ui: 'ZCOOL KuaiLe', cursive;
            --easing-standard: cubic-bezier(0.4, 0, 0.2, 1); --easing-decelerate: cubic-bezier(0.0, 0.0, 0.2, 1);
            --easing-accelerate: cubic-bezier(0.4, 0.0, 1, 1);
        }
        body.dark-mode {
             --color-bg: #1a1d23; --color-panel-bg: #2f343d; --color-panel-border: #4a4f58;
            --color-text-main: #d1d1d1; --color-text-secondary: #9a9a9a; --color-text-keyword: #c8a791;
            --color-heading: #e06c75; --color-button-primary-bg: linear-gradient(180deg, #607D8B 0%, #546E7A 100%);
            --color-button-primary-hover-bg: linear-gradient(180deg, #78909C 0%, #607D8B 100%);
            --color-accent: #82aaff; --color-accent-light: #9fbeff;
            --color-accent-highlight-bg: rgba(130, 170, 255, 0.15);
            --color-accent-highlight-border: rgba(130, 170, 255, 0.5);
            --shadow-panel: 0 15px 35px rgba(0,0,0,0.4), 0 5px 15px rgba(0,0,0,0.3);
        }

        /* ... (大部分样式与之前版本一致，为简洁省略) ... */
        html, body { height: 100%; }
        body { background-color: var(--color-bg); font-family: var(--font-main); font-weight: 400; line-height: 2.0; color: var(--color-text-main); margin: 0; padding: 2rem 1rem; display: flex; flex-direction: column; align-items: center; transition: background-color 0.4s var(--easing-standard); }
        #main-content-panel { background-color: var(--color-panel-bg); background-image: url('https://www.transparenttextures.com/patterns/rice-paper-2.png'); border: 1px solid var(--color-panel-border); border-radius: 12px; box-shadow: var(--shadow-panel); width: 100%; max-width: 800px; padding: 2rem; box-sizing: border-box; transition: all 0.4s var(--easing-standard); }
        h1, h2, h3 { font-family: var(--font-heading); text-shadow: 1px 1px 2px rgba(0,0,0,0.1); }
        h1 { color: var(--color-heading); font-size: 2.5rem; letter-spacing: 2px; border-bottom: 2px solid var(--color-heading); padding-bottom: 1rem; margin-bottom: 1.5rem; text-align: center; }
        h2 { font-size: 1.8rem; color: var(--color-text-main); }
        h3 { font-size: 1.5rem; color: var(--color-text-secondary); }
        #active-insight-bar { background: var(--color-active); color: white; padding: 0.6rem 1rem; margin: -2rem -2rem 1.5rem -2rem; border-bottom: 1px solid rgba(0,0,0,0.1); box-shadow: 0 2px 8px rgba(0,0,0,0.2); display: none; align-items: center; justify-content: space-between; font-size: 0.95rem; position: sticky; top: 0; z-index: 50; border-top-left-radius: 12px; border-top-right-radius: 12px; }
        #active-insight-bar .insight-info .fas { font-size: 1.2em; margin-right: 0.8rem; text-shadow: 1px 1px 2px rgba(0,0,0,0.2); }
        #close-insight-bar { background: none; border: none; color: white; font-size: 1.5rem; cursor: pointer; opacity: 0.8; transition: opacity 0.2s; }
        #close-insight-bar:hover { opacity: 1; }
        #game-display { background-color: transparent; border: none; padding: 0; min-height: 200px; margin-bottom: 2rem; font-size: 1.1rem; box-shadow: none; white-space: pre-wrap; position: relative; }
        .text-content-wrapper { animation: fadeIn 0.8s var(--easing-decelerate) forwards; }
        @keyframes fadeIn { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } }
        .typing-cursor { display: inline-block; width: 3px; height: 1.2em; background-color: var(--color-text-main); animation: blink 1s step-end infinite; }
        @keyframes blink { from, to { background-color: transparent; } 50% { background-color: var(--color-text-main); } }
        .keyword { color: var(--color-text-keyword); font-weight: 700; border-bottom: 1px dashed var(--color-text-keyword); padding-bottom: 1px; }
        #choices { margin-top: 1.5rem; list-style: none; padding: 0; }
        #choices li { margin-bottom: 1rem; animation: fadeInUp 0.5s var(--easing-standard) backwards; }
        #choices li:nth-child(2) { animation-delay: 0.1s; }
        #choices li:nth-child(3) { animation-delay: 0.2s; }
        #choices li:nth-child(4) { animation-delay: 0.3s; }
        @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
        #choices button { display: flex; align-items: center; width: 100%; padding: 0.8rem 1.2rem; background: var(--color-button-primary-bg); color: #fff; border: none; border-radius: 8px; font-family: var(--font-ui); font-size: 1.1rem; cursor: pointer; transition: all 0.3s var(--easing-standard); text-align: left; box-shadow: var(--shadow-card); min-height: 48px; }
        #choices button:hover { background: var(--color-button-primary-hover-bg); transform: translateY(-3px); box-shadow: var(--shadow-card-hover); }
        #choices button:active { transform: translateY(1px); box-shadow: 0 1px 3px rgba(0,0,0,0.2) inset; }
        
        /* --- 证据日志区 (手风琴) - 样式升级 --- */
        #evidence-journal { margin-top: 2rem; border-top: 2px dashed var(--color-panel-border); padding-top: 1.2rem; }
        #evidence-journal h2 { color: var(--color-heading); text-align: center; margin-bottom: 1rem; }
        #evidence-journal ul { list-style: none; padding-left: 0; /* 移除内边距以便对齐 */ color: var(--color-text-secondary); font-size: 1rem; }

        .evidence-item {
            border-bottom: 1px solid var(--color-accent-highlight-border);
            margin-bottom: 0.5rem;
            overflow: hidden; /* 关键：确保展开内容不溢出 */
        }

        .evidence-title-line {
            display: flex;
            align-items: center; /* 关键：垂直居中 */
            padding: 0.8rem 0.5rem;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }
        .evidence-title-line:hover {
            background-color: var(--color-accent-highlight-bg);
        }

        .evidence-title-line .fa-chevron-right {
            font-size: 0.8em;
            color: var(--color-accent);
            transition: transform 0.3s var(--easing-standard);
            margin-right: 0.8rem;
        }

        .evidence-item.is-expanded .evidence-title-line .fa-chevron-right {
            transform: rotate(90deg);
        }

        .evidence-title-line .evidence-icon {
            color: var(--color-primary-main);
            font-size: 1.1em;
            margin-right: 0.8rem;
            width: 1.2em; /* 固定宽度，确保对齐 */
            text-align: center;
        }
        .dark-mode .evidence-title-line .evidence-icon {
            color: var(--color-text-keyword);
        }

        .evidence-title-line span {
            flex-grow: 1;
            color: var(--color-text-main);
        }
        
        .evidence-detail-panel {
            max-height: 0; /* 关键：默认收起 */
            opacity: 0;
            overflow: hidden;
            transition: max-height 0.4s var(--easing-standard), opacity 0.4s var(--easing-standard), padding 0.3s var(--easing-standard);
            padding: 0 1rem 0 3.5rem; /* 配合图标的缩进 */
            font-size: 0.9rem;
            color: var(--color-text-secondary);
        }
        .evidence-item.is-expanded .evidence-detail-panel {
            /* JS会动态设置max-height */
            opacity: 1;
            padding-top: 0;
            padding-bottom: 1rem;
        }

        /* ... (其余大部分样式与之前版本一致，为简洁省略) ... */
        #start-screen { text-align: center; padding: 3rem 1rem; }
        #start-screen h1 { font-size: 2.8rem; }
        #start-screen p { font-size: 1.1rem; color: var(--color-text-secondary); margin-bottom: 2rem; padding: 0 1rem; }
        #start-button { padding: 1rem 2rem; font-size: 1.2rem; background: var(--color-success); color: white; border: none; border-radius: 8px; cursor: pointer; transition: background-color 0.3s ease; box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3); min-height: 55px; display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-ui); }
        #start-button:hover { background-color: #45a049; }
        .fixed-action-buttons { position: fixed; bottom: 20px; right: 20px; z-index: 100; display: flex; flex-direction: column; gap: 10px; }
        .action-button { width: 60px; height: 60px; border-radius: 50%; color: white; border: none; box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.3); font-size: 1.5rem; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s var(--easing-standard); overflow: hidden; }
        .action-button:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 8px 15px rgba(0,0,0,0.3); }
        #deduction-toggle-button { background-color: var(--color-accent); }
        #theme-toggle-button { background-color: #3e4451; }
        #deduction-toggle-button.new-evidence-alert { animation: pulse-accent 1.5s infinite; }
        @keyframes pulse-accent { 0% { box-shadow: 0 0 0 0 var(--color-active); } 70% { box-shadow: 0 0 0 15px transparent; } 100% { box-shadow: 0 0 0 0 transparent; } }
        #deduction-board-modal { display: flex; position: fixed; z-index: 200; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0); justify-content: center; align-items: center; backdrop-filter: blur(0px); transition: background-color 0.4s ease, backdrop-filter 0.4s ease; pointer-events: none; opacity: 0; }
        #deduction-board-modal.visible { background-color: rgba(0, 0, 0, 0.6); backdrop-filter: blur(8px); pointer-events: auto; opacity: 1; }
        .deduction-board-content { background: var(--color-panel-bg); margin: 5% auto; padding: 2rem; border: 1px solid var(--color-panel-border); width: 90%; max-width: 800px; box-shadow: var(--shadow-panel); border-radius: 12px; position: relative; max-height: 90vh; overflow-y: auto; transition: transform 0.4s var(--easing-standard), opacity 0.3s ease; transform: scale(0.95) translateY(20px); opacity: 0; }
        #deduction-board-modal.visible .deduction-board-content { transform: scale(1) translateY(0); opacity: 1; }
        .deduction-board-section { margin-bottom: 2rem; }
        .deduction-board-section h3 { color: var(--color-text-keyword); margin-bottom: 1rem; display: flex; align-items: center; }
        #deduction-evidence-area, #deduction-insight-area { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 1rem; padding: 1rem; border: 1px solid var(--color-panel-border); border-radius: 8px; min-height: 100px; max-height: 300px; overflow-y: auto; margin-bottom: 1rem; }
        #deduction-evidence-area { background-color: rgba(0,0,0,0.02); }
        .dark-mode #deduction-evidence-area { background-color: rgba(0,0,0,0.1); }
        #deduction-insight-area { background-color: rgba(255,255,255,0.2); }
        .dark-mode #deduction-insight-area { background-color: rgba(255,255,255,0.05); }
        .evidence-card, .insight-card { background-color: var(--bg-paper-card); border: 1px solid #ddd; .dark-mode & { border-color: #4a4f58; } border-radius: 8px; padding: 1rem; text-align: center; cursor: pointer; transition: all 0.3s var(--easing-standard); box-shadow: var(--shadow-card); position: relative; font-size: 0.95rem; overflow: hidden; }
        .evidence-card:hover, .insight-card:hover { transform: translateY(-5px) scale(1.03); box-shadow: var(--shadow-card-hover); }
        .card-title { font-weight: 700; font-size: 1rem; }
        .card-description { position: absolute; bottom: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to top, rgba(255,250,240,1) 70%, rgba(255,250,240,0) 100%); .dark-mode & { background: linear-gradient(to top, rgba(47,52,61,1) 70%, rgba(47,52,61,0) 100%); } padding: 0.8rem; display: flex; align-items: flex-end; justify-content: center; text-align: left; font-size: 0.85rem; opacity: 0; transform: translateY(100%); transition: all 0.3s ease; box-sizing: border-box; pointer-events: none; }
        .evidence-card:hover .card-description, .insight-card:hover .card-description { opacity: 1; transform: translateY(0); }
        .evidence-card .fas, .insight-card .fas { color: var(--color-heading); font-size: 1.5em; margin-bottom: 0.5rem; display: block; }
        .evidence-card.selected, .insight-card.selected { border: 2px solid var(--color-accent); background-color: var(--color-accent-highlight-bg); box-shadow: 0 0 12px var(--color-accent-highlight-border); transform: scale(1.05); }
        .evidence-card.used, .insight-card.used { opacity: 0.6; }
        .evidence-card.used::after, .insight-card.used::after { content: '\f00c'; font-family: 'Font Awesome 6 Free'; font-weight: 900; position: absolute; top: 8px; right: 8px; color: var(--color-success); text-shadow: 0 0 3px white; }
        .insight-card button { margin-top: 1rem; padding: 0.5rem 0.8rem; font-size: 0.9rem; background: var(--color-accent); color: white; border-radius: 6px; width: auto; min-height: auto; display: inline-flex; justify-content: center; align-items: center; position: relative; z-index: 2; border: none; font-family: var(--font-ui); }
        .insight-card button:hover { background-color: var(--color-accent-light); }
        .insight-card button .fas { color: white; margin-bottom: 0; margin-right: 0.5rem; font-size: 1em; }
        .insight-card button.active-insight-btn { background-color: var(--color-active); color: var(--color-text-main); font-weight: 700; }
        .insight-card button.active-insight-btn .fas { color: var(--color-text-main); }
        #deduce-button { padding: 0.8rem 1.5rem; background: var(--color-button-primary-bg); color: white; border-radius: 8px; font-family: var(--font-ui); font-size: 1.2rem; cursor: pointer; border: none; transition: all 0.3s ease; display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--shadow-card); }
        #deduce-button:hover { background: var(--color-button-primary-hover-bg); transform: scale(1.05); box-shadow: var(--shadow-card-hover); }
        .close-modal-btn { position: absolute; top: 15px; right: 20px; font-size: 2rem; color: var(--color-text-secondary); cursor: pointer; transition: color 0.2s ease; }
        .close-modal-btn:hover { color: var(--color-heading); }
        .highlighted-by-insight { background-color: var(--color-accent-highlight-bg); cursor: pointer; border-bottom: 1px dashed var(--color-accent-highlight-border); transition: background-color 0.2s ease; position: relative; display: inline; border-radius: 3px; padding: 0 2px; }
        .highlighted-by-insight:hover { background-color: rgba(96, 125, 139, 0.25); }
        .deep-text-popup { position: absolute; background: var(--color-panel-bg); border: 1px solid var(--color-panel-border); padding: 1rem; box-shadow: var(--shadow-panel); border-radius: 8px; max-width: 90%; min-width: 280px; z-index: 150; font-size: 0.95rem; color: var(--color-text-main); text-align: left; pointer-events: none; opacity: 0; transition: opacity 0.3s ease, transform 0.3s ease; transform: translate(-50%, -100%); left: 50%; top: auto; bottom: auto; }
        .deep-text-popup strong { color: var(--color-heading); font-size: 1.05em; display: block; margin-bottom: 0.5em; }
        .feedback-popup { position: fixed; top: 20px; left: 50%; transform: translateX(-50%) translateY(-20px); padding: 1rem 1.5rem; border-radius: 8px; color: white; font-family: var(--font-ui); font-size: 1.1rem; z-index: 1000; box-shadow: 0 4px 12px rgba(0,0,0,0.2); opacity: 0; transition: all 0.5s ease; display: flex; align-items: center; }
        .feedback-popup.success { background-color: var(--color-success); }
        .feedback-popup.failure { background-color: var(--color-failure); }
        .feedback-popup .fas { margin-right: 0.8rem; font-size: 1.2em; }
        .card-is-deducing { transition: all 0.5s var(--easing-standard); z-index: 250; }
        .card-glow { box-shadow: 0 0 15px 5px var(--color-active); }
        .new-insight-spawn { position: fixed; opacity: 0; transform: scale(0.5); transition: opacity 0.5s ease, transform 0.5s ease; z-index: 300; }
        #page-footer { text-align: center; margin: 3rem auto 0 auto; max-width: 800px; width: 100%; padding: 1.5rem 0; border-top: 1px solid var(--color-panel-border); font-size: 0.85rem; color: var(--color-text-secondary); }
        @media (max-width: 600px) { :root { font-size: 14px; } body { padding: 0; } #main-content-panel { padding: 1.5rem 1rem; border-radius: 0; box-shadow: none; border: none; } h1 { font-size: 1.8rem; margin-bottom: 1rem; } #game-display { font-size: 1rem; min-height: 180px; } #choices button { padding: 0.7rem 0.8rem; font-size: 0.95rem; } .fixed-action-buttons { right: 15px; bottom: 15px; } .action-button { width: 50px; height: 50px; font-size: 1.2rem; } .deduction-board-content { width: 95%; padding: 1.2rem; margin: 2.5% auto; } #deduction-evidence-area, #deduction-insight-area { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); max-height: 200px; } }

    </style>
</head>
<body class="light-mode">
    <div id="main-content-panel">
        <div id="start-screen">
            <h1>滇境迷踪</h1>
            <h2>—— 历史推断模拟器 ——</h2>
            <p>这是一场纯文字的西南边陲探索之旅，你将作为汉代史官，通过收集证据、进行推断，揭秘失落的古滇王国。</p>
            <button id="start-button"><i class="fas fa-play"></i> 开始考察</button>
        </div>

        <div id="game-container" style="display: none;">
            <div id="active-insight-bar">
                <div class="insight-info"></div>
                <button id="close-insight-bar" title="取消激活视角">&times;</button>
            </div>
            <div id="status" style="display:none;">
                <i class="fas fa-user-circle"></i> 汉代史官
            </div>
            <h1>滇境迷踪</h1>
            <div id="game-display"></div>
            <ul id="choices"></ul>
            <div id="evidence-journal">
                <h2><i class="fas fa-scroll"></i> 考察日志</h2>
                <ul id="evidence-list"></ul>
            </div>
        </div>
    </div>

    <div id="deduction-board-modal">
        <div class="deduction-board-content">
            <span class="close-modal-btn">&times;</span>
            <h2><i class="fas fa-brain"></i> 思维沙盘</h2>
            <div class="deduction-board-section">
                <h3><i class="fas fa-search"></i> 证据区 (点击选择)</h3>
                <div id="deduction-evidence-area" class="evidence-area-grid"></div>
            </div>
            <div class="deduction-actions">
                <button id="deduce-button"><i class="fas fa-lightbulb"></i> 进行推断</button>
            </div>
            <div class="deduction-board-section">
                <h3><i class="fas fa-glasses"></i> 洞察区 (点击选择进行元推断，或激活视角)</h3>
                <div id="deduction-insight-area" class="insight-area-grid"></div>
            </div>
        </div>
    </div>

    <div class="fixed-action-buttons">
        <button id="theme-toggle-button" class="action-button" title="切换主题">
            <i class="fas fa-moon"></i>
        </button>
        <button id="deduction-toggle-button" class="action-button" style="display: none;">
            <i class="fas fa-compass"></i>
        </button>
    </div>
    
    <footer id="page-footer"></footer>

    <script>
        // --- (JavaScript代码与上一版几乎完全相同，除了updateEvidenceJournal和事件监听器的微调) ---
        // DOM 元素引用
        const body = document.body;
        const gameDisplay = document.getElementById('game-display');
        const choicesList = document.getElementById('choices');
        const evidenceListElement = document.getElementById('evidence-list');
        const gameContainer = document.getElementById('game-container');
        const startScreen = document.getElementById('start-screen');
        const startButton = document.getElementById('start-button');
        const deductionToggleButton = document.getElementById('deduction-toggle-button');
        const themeToggleButton = document.getElementById('theme-toggle-button');
        const deductionBoardModal = document.getElementById('deduction-board-modal');
        const closeModalBtn = document.querySelector('.close-modal-btn');
        const deductionEvidenceArea = document.getElementById('deduction-evidence-area');
        const deductionInsightArea = document.getElementById('deduction-insight-area');
        const deduceButton = document.getElementById('deduce-button');
        const activeInsightBar = document.getElementById('active-insight-bar');
        const closeInsightBarBtn = document.getElementById('close-insight-bar');

        // 游戏状态
        let gameState = {
            currentScene: 'intro', collectedEvidence: [], unlockedInsights: [],
            activeInsight: null, selectedEvidenceForDeduction: [], newEvidencePending: false,
            isTyping: false, typingInterval: null, hasActivatedInsightBefore: false,
        };
        // 数据注册表 (此处省略以保持简洁)
        const FA_ICONS = {
            'fa-scroll': 'fa-scroll', 'fa-stamp': 'fa-stamp', 'fa-snake': 'fa-snake', 'fa-gavel': 'fa-gavel',
            'fa-seedling': 'fa-seedling', 'fa-cow': 'fa-cow', 'fa-hammer': 'fa-hammer', 'fa-female': 'fa-female',
            'fa-chess-king': 'fa-chess-king', 'fa-road': 'fa-road', 'fa-gem': 'fa-gem', 'fa-map-marked-alt': 'fa-map-marked-alt',
            'fa-dna': 'fa-dna', 'fa-church': 'fa-church', 'fa-book': 'fa-book', 'fa-star': 'fa-star',
            'fa-user-circle': 'fa-user-circle', 'fa-arrow-right': 'fa-arrow-right', 'fa-bookmark': 'fa-bookmark',
            'fa-play': 'fa-play', 'fa-compass': 'fa-compass', 'fa-brain': 'fa-brain', 'fa-search': 'fa-search',
            'fa-glasses': 'fa-glasses', 'fa-lightbulb': 'fa-lightbulb', 'fa-check-circle': 'fa-check-circle',
            'fa-times-circle': 'fa-times-circle', 'fa-handshake': 'fa-handshake', 'fa-sitemap': 'fa-sitemap',
            'fa-infinity': 'fa-infinity', 'fa-chart-pie': 'fa-chart-pie', 'fa-hand-holding-usd': 'fa-hand-holding-usd',
            'fa-palette': 'fa-palette', 'fa-user-lock': 'fa-user-lock', 'fa-mask': 'fa-mask', 'fa-globe-asia': 'fa-globe-asia',
            'fa-route': 'fa-route', 'fa-home': 'fa-home', 'fa-building': 'fa-building', 'fa-eye': 'fa-eye',
            'fa-sun': 'fa-sun', 'fa-moon': 'fa-moon'
        };
        const EVIDENCE_DATA = {
            'evidence_shizhaishan_royalty': { name: '石寨山王陵遗迹', description: '高耸的王陵，暗示着高度集中的王权。', icon: FA_ICONS['fa-chess-king'] },
            'evidence_heposuo_urban': { name: '河泊所都邑遗址', description: '与王陵毗邻的都邑，生者之城与逝者之城的呼应。', icon: FA_ICONS['fa-home'] },
            'evidence_ganlan_houses': { name: '干栏式建筑遗迹', description: '湖沼环境中的桩居建筑残骸，体现古滇人的居住智慧。', icon: FA_ICONS['fa-building'] },
            'evidence_mound_tombs_diff': { name: '大小墓葬分化', description: '墓葬规模和随葬品的差异，反映了精细的社会阶层。', icon: FA_ICONS['fa-star'] },
            'evidence_craftsman_tomb': { name: '铸匠墓与陶范', description: '发现的陶范和陶管，证明存在国家级专业青铜工匠。', icon: FA_ICONS['fa-hammer'] },
            'evidence_mixed_agriculture': { name: '稻粟并存痕迹', description: '农田遗迹中稻谷与粟米的共存，显示南北农业融合。', icon: FA_ICONS['fa-seedling'] },
            'evidence_cattle_worship': { name: '大量牛骨与图腾', description: '祭祀坑中的牛骨和青铜器上的牛纹，牛是财富和祭祀的核心。', icon: FA_ICONS['fa-cow'] },
            'evidence_lost_wax_tech': { name: '失蜡法铸造痕迹', description: '复杂青铜器上的镂空与立体细节，指向顶级的失蜡法工艺。', icon: FA_ICONS['fa-hammer'] },
            'evidence_gilding_tech': { name: '鎏金工艺样本', description: '器物上金光闪闪的涂层，彰显尊贵地位的鎏金技术。', icon: FA_ICONS['fa-star'] },
            'evidence_killer_ritual_vessel': { name: '杀人祭柱贮贝器场景', description: '描绘了人祭和女性主祭的场景，蛇柱图腾引人深思。', icon: FA_ICONS['fa-church'] },
            'evidence_oath_ritual_vessel': { name: '诅盟场面贮贝器场景', description: '百人盟誓、椎牛刑马，女性在铜鼓阵中主持国之大典。', icon: FA_ICONS['fa-church'] },
            'evidence_knight_vessel': { name: '四牛鎏金骑士贮贝器', description: '鎏金骑士与环绕的四牛，展现军事与经济权力。', icon: FA_ICONS['fa-chess-king'] },
            'evidence_dongshan_bronze': { name: '东山文化铜鼓同源', description: '与越南东山文化相似的铜鼓形制和装饰母题。', icon: FA_ICONS['fa-map-marked-alt'] },
            'evidence_yelang_no_customs': { name: '夜郎文化习俗缺失', description: '滇文化中不见夜郎独特的“套头葬”和“覆面葬”。', icon: FA_ICONS['fa-map-marked-alt'] },
            'evidence_tibetan_yi_corridor': { name: '扣饰动物搏斗母题', description: '充满动感的猛兽搏斗纹，与欧亚草原艺术相似，指向藏彝走廊。', icon: FA_ICONS['fa-map-marked-alt'] },
            'evidence_seashell_currency': { name: '大量印度洋海贝', description: '内陆深处出土的异域海贝，南方丝绸之路贸易的明证。', icon: FA_ICONS['fa-gem'] },
            'evidence_foreign_luxuries': { name: '琥珀玛瑙玻璃珠', description: '来自缅甸、波罗的海甚至罗马、印度的奢侈品。', icon: FA_ICONS['fa-gem'] },
            'evidence_shubu_qiongzhuzhang': { name: '《史记》中的蜀布邛竹杖', description: '张骞在大夏发现的中国西南特产，经由南方丝绸之路外销。', icon: FA_ICONS['fa-book'] },
            'evidence_no_written_language': { name: '缺乏本土文字系统', description: '古滇文明未发展出文字，与高超青铜技术形成对比。', icon: FA_ICONS['fa-book'] },
            'evidence_female_ritual_lead': { name: '女性在祭祀中居核心', description: '多件贮贝器显示女性在重大宗教仪式中扮演主祭人。', icon: FA_ICONS['fa-female'] },
            'evidence_zhuangqiao_chronology': { name: '滇文化早于庄蹻年代', description: '放射性碳定年显示，古滇国战国早期已成熟，早于庄蹻入滇。', icon: FA_ICONS['fa-scroll'] },
            'evidence_no_chu_artifacts': { name: '早期墓葬缺乏楚器物', description: '与庄蹻开滇传说矛盾，早期滇国贵族墓葬中无楚式器物。', icon: FA_ICONS['fa-star'] },
            'evidence_yellow_river_gene': { name: '古基因组溯源黄河流域', description: 'aDNA研究表明古滇先民主体源自黄河流域南迁粟作人群。', icon: FA_ICONS['fa-dna'] },
            'evidence_han_artifacts_mid': { name: '中期墓葬汉式器物', description: '铜镜、漆器、玉璧、汉钱等汉式器物在中期墓葬中大量出现。', icon: FA_ICONS['fa-star'] },
            'evidence_dian_king_seal': { name: '纯金“滇王之印”', description: '汉武帝颁赐的王印，是滇国臣服并纳入汉朝政治轨道的物证。', icon: FA_ICONS['fa-gavel'] },
            'evidence_river_lake_han_seal': { name: '河泊所汉代官印封泥', description: '益州太守章、刺史章，确定河泊所为益州郡郡治。', icon: FA_ICONS['fa-stamp'] },
            'evidence_river_lake_dian_seal': { name: '河泊所滇王属官印章', description: '滇王相印、滇国相印，与汉代官印同时发现。', icon: FA_ICONS['fa-snake'] },
            'evidence_cultural_continuity': { name: '剽牛祭天习俗延续', description: '独龙族剽牛祭天与古滇“椎牛”场景惊人相似，文化基因传承。', icon: FA_ICONS['fa-church'] },
        };
        const INSIGHT_DATA = {
            'insight_complex_social_struct': { name: '复杂社会结构', description: '古滇国并非原始部落，而是拥有精细社会分工和国家级工匠的复杂王国。', icon: FA_ICONS['fa-chart-pie'] },
            'insight_mixed_economy_power': { name: '高效混合经济', description: '南北农业与畜牧业的融合，为古滇国的强盛提供了稳定经济基础。', icon: FA_ICONS['fa-hand-holding-usd'] },
            'insight_lost_wax_pinnacle': { name: '失蜡法铸造巅峰', description: '古滇国青铜器展现的失蜡法技艺，达到了中国古代乃至世界的高峰。', icon: FA_ICONS['fa-star'] },
            'insight_visual_history_system': { name: '视觉叙事体系', description: '没有文字的古滇人，通过贮贝器上的宏大立体场景，构建了独特的视觉化叙事体系，承载历史与意识形态。', icon: FA_ICONS['fa-palette'] },
            'insight_female_theocracy_clues': { name: '女性神权政治结构', description: '女性在国家级宗教仪式中扮演核心角色，可能指向以女性祭司为核心的神权政治。', icon: FA_ICONS['fa-female'] },
            'insight_creolized_culture': { name: '克里奥尔化文明', description: '古滇文明主动吸收并融合了北方草原、中原、东南亚、南亚多元文化，锻造出独特的身份。', icon: FA_ICONS['fa-globe-asia'] },
            'insight_southern_silk_road_hub': { name: '南方丝绸之路枢纽', description: '古滇国地处古代交通要道，是国际贸易的关键掌控者与受益者。', icon: FA_ICONS['fa-route'] },
            'insight_text_paradox_strategy': { name: '文字悖论的政治策略', description: '缺乏文字并非技术落后，而是统治精英为垄断知识和意识形态的主动选择。', icon: FA_ICONS['fa-user-lock'] },
            'insight_zhuangqiao_myth': { name: '庄蹻开滇是政治神话', description: '考古和基因证据驳斥了“庄蹻开滇”的传统论述，揭示其为汉代合法化统治的政治神话。', icon: FA_ICONS['fa-mask'] },
            'insight_yellow_river_ancestry': { name: '黄河流域农业先民', description: '古滇先民主体源自黄河流域南迁的粟作人群，奠定了其农业基础。', icon: FA_ICONS['fa-dna'] },
            'insight_jimmy_policy': { name: '“羁縻”与“双轨制”', description: '汉王朝并非简单地取代了滇王权力，而是采取了保留其传统权威、同时进行监督管理的“双轨制”治理策略。', icon: FA_ICONS['fa-handshake'] },
            'insight_smooth_integration': { name: '平稳融入中华一体', description: '通过灵活的“羁縻”政策和文化渗透，古滇国平稳融入统一多民族国家，而非激烈征服。', icon: FA_ICONS['fa-sitemap'] },
            'insight_cultural_resilience': { name: '文化基因的延续', description: '古滇文化并未湮灭，其核心元素以隐蔽而持久的方式流淌在后世云南各民族血脉中。', icon: FA_ICONS['fa-infinity'] },
        };
        const DEDUCTION_RECIPES = [
            { requiredEvidence: ['evidence_river_lake_han_seal', 'evidence_river_lake_dian_seal'], yieldsInsight: 'insight_jimmy_policy', text: '你将汉代官印和滇王属官印章进行比对，突然明白了！汉朝采取的正是“羁縻”政策，在保留滇王部分权力的同时，设立郡县进行管理。这是“双轨制”的铁证！' },
            { requiredEvidence: ['evidence_killer_ritual_vessel', 'evidence_oath_ritual_vessel', 'evidence_female_ritual_lead'], yieldsInsight: 'insight_female_theocracy_clues', text: '多件贮贝器上女性主祭的形象，结合其高贵的肩舆和铜鼓阵列，让你推断：古滇国可能存在一个以女性为核心的神权政治结构！' },
            { requiredEvidence: ['evidence_no_written_language', 'evidence_lost_wax_tech'], yieldsInsight: 'insight_text_paradox_strategy', text: '古滇国缺乏文字，却将复杂的历史和信仰铸入青铜器。你意识到这并非偶然，而是统治者刻意选择的、一种更易于控制意识形态的视觉叙事策略。' },
            { requiredEvidence: ['evidence_zhuangqiao_chronology', 'evidence_no_chu_artifacts', 'evidence_yellow_river_gene'], yieldsInsight: 'insight_zhuangqiao_myth', text: '年代不符、楚文化缺失、基因溯源北方——这些证据共同指向一个结论：司马迁的“庄蹻开滇”只是汉代为合法化统治而编织的“政治神话”！' },
            { requiredEvidence: ['evidence_mixed_agriculture', 'evidence_cattle_worship', 'evidence_craftsman_tomb'], yieldsInsight: 'insight_complex_social_struct', text: '高效的农牧复合经济，以及专业工匠的存在，共同构筑了一个远比想象中复杂的古滇社会。' },
            { requiredEvidence: ['evidence_seashell_currency', 'evidence_foreign_luxuries', 'evidence_shubu_qiongzhuzhang', 'evidence_tibetan_yi_corridor'], yieldsInsight: 'insight_southern_silk_road_hub', text: '来自四面八方的异域商品，以及西南特产的外销，清晰地展现了古滇国作为南方丝绸之路关键枢纽的国际化地位！' },
            { requiredEvidence: ['evidence_han_artifacts_mid', 'evidence_dian_king_seal', 'insight_jimmy_policy'], yieldsInsight: 'insight_smooth_integration', text: '汉式器物、滇王之印以及你已理解的“羁縻政策”，共同勾勒出古滇国平稳融入中华一体的完整图景，而非简单的武力征服。' },
            { requiredEvidence: ['evidence_cultural_continuity', 'insight_female_theocracy_clues'], yieldsInsight: 'insight_cultural_resilience', text: '独龙族的剽牛祭天习俗与古滇仪式惊人相似，结合女性神权政治的线索，你洞察到古滇文化基因并未湮灭，而是以一种隐蔽而持久的方式传承至今。' },
        ];
        const gameData = {
            'intro': {
                text: `你，一名年轻的汉代史官，正站在帝国的西南边陲。
<span class="keyword">《史记》</span>中<span class="keyword">司马迁</span>对“滇”的记载寥寥数百字，字里行间充满了神秘与疑问。
“楚将<span class="keyword">庄蹻</span>入滇，变服从其俗而称王”、“<span class="keyword">汉武帝</span>赐<span class="keyword">滇王王印</span>，复长其民”……
这些碎片化的叙述，勾勒出一个模糊的轮廓，却也留下了无尽的疑问。
这个被形容为“小邑，最宠焉”的王国，究竟拥有怎样的社会结构？
其人民创造了何等独特的文化？它又如何在强大的汉帝国向西南扩张的历史洪流中自处，并最终归于沉寂？
你的使命是，深入这片被迷雾笼罩的土地，用你的双眼和智慧，重塑一个失落的青铜王国。

你的考察，从这片古老的<span class="keyword">滇池</span>岸边开始……`,
                choices: [{ text: '开始你的旅程', nextScene: 'chapter1_start' }],
                evidenceGain: []
            },
            'chapter1_start': {
                text: `你沿着<span class="keyword">滇池</span>南岸前行，首先映入眼帘的是一片广阔的遗址群。
你被告知，这里可能就是古滇国的权力核心——生者之城与逝者之城的结合。
不远处，一座小山丘上，似乎隐藏着王族的墓葬（<span class="keyword">石寨山</span>）；而与它隔水相望的平坦区域，则散布着大量的建筑残迹（<span class="keyword">河泊所</span>）。`,
                choices: [
                    { text: '前往山丘上的王陵遗址（石寨山）', nextScene: 'stone_village_hill' },
                    { text: '探访平坦区域的都邑遗址（河泊所）', nextScene: 'river_lake_station_intro' }
                ],
                evidenceGain: ['evidence_shizhaishan_royalty', 'evidence_heposuo_urban']
            },
            'stone_village_hill': {
                text: `你踏上<span class="keyword">石寨山</span>，这里弥漫着历史的厚重感。
考古学家们曾在这里发掘出震惊世界的<span class="keyword">王陵墓葬群</span>。
山顶上，残存的祭祀台基似乎在无声地诉说着往日的辉煌与神秘。
你想象着那些曾被发现的、巧夺天工的青铜器。`,
                choices: [
                    { text: '仔细勘察墓葬区，尝试推断社会阶层', nextScene: 'mound_tombs_social_strata' },
                    { text: '寻找线索，了解古滇人的经济生活', nextScene: 'economic_engine_clues' }
                ],
                evidenceGain: ['evidence_mound_tombs_diff']
            },
            'mound_tombs_social_strata': {
                text: `你穿梭于大小不一的墓葬坑之间，尽管多数已被清理，但想象中的随葬品组合依然让你对古滇国的社会分工有了初步的认识。
你观察到，有的墓葬随葬兵器和工具，有的则随葬纺轮和装饰品。

更令人惊喜的是，你在一个不起眼的角落，偶然发现了被考古学家忽略的残骸——<span data-insight-key="insight_complex_social_struct">一些<span class="keyword">陶范</span>和烧焦的<span class="keyword">陶管</span>碎片</span>。
这难道是……？`,
                choices: [
                    { text: '推断这些残骸的意义', nextScene: 'craftsman_tomb_discovery' },
                    { text: '继续寻找其他线索', nextScene: 'economic_engine_clues' }
                ],
                evidenceGain: ['evidence_craftsman_tomb'],
                deepText: {
                    'insight_complex_social_struct': '这些陶范和陶管揭示了古滇国存在一个由王室直接控制和供养的、拥有国家级技艺的专业工匠阶层，社会远比想象中精细。'
                }
            },
            'craftsman_tomb_discovery': {
                text: `这些<span class="keyword">陶范</span>和<span class="keyword">陶管</span>是铸造青铜器的重要工具！
这清晰地指向了一个特殊群体——技艺高超的青铜铸匠。
他们并非普通的平民，而是拥有国家级技艺的专业技术阶层，很可能直接服务于王室。
这是一个远比“王室—平民”二元结构更精细的社会模型。

你的考察日记中多了一笔关于“<span class="keyword">铸匠墓</span>”的记录。`,
                choices: [
                    { text: '前往都邑遗址，或许那里有更多关于生活的线索', nextScene: 'river_lake_station_intro' },
                    { text: '转向探索古滇国的经济引擎', nextScene: 'economic_engine_clues' }
                ],
                evidenceGain: []
            },
            'economic_engine_clues': {
                text: `在<span class="keyword">石寨山</span>附近，你发现了一些古代农田和祭祀的痕迹。
地表的陶片上，似乎依稀可见<span class="keyword">稻谷</span>与<span class="keyword">粟米</span>的纹路。
而一些祭祀坑中，埋藏着大量的<span class="keyword">牛骨</span>。这让你思考古滇国的经济模式。`,
                choices: [
                    { text: '深入思考古滇国的农业构成', nextScene: 'agriculture_mystery' },
                    { text: '关注牛在古滇社会中的特殊地位', nextScene: 'cattle_status' }
                ],
                evidenceGain: ['evidence_mixed_agriculture', 'evidence_cattle_worship']
            },
            'agriculture_mystery': {
                text: `这片土地上，稻作和粟作的痕迹并存，这是一个引人深思的发现。
传统的认知可能偏向稻作文明，但这些迹象显示了不一样的图景。
最新的研究表明，古滇国的农业经济，是一种融合了北方<span class="keyword">旱作传统</span>（粟、黍）与南方<span class="keyword">稻作技术</span>（稻）的复杂系统。
这种南北两大农业体系的交融，并非简单的并存，而是一种高效的互补。`,
                choices: [
                    { text: '继续探讨畜牧业的重要性', nextScene: 'cattle_status' },
                    { text: '返回石寨山，寻找更具体的文物线索', nextScene: 'stone_village_hill' }
                ],
                evidenceGain: []
            },
            'cattle_status': {
                text: `<span data-insight-key="insight_mixed_economy_power">青铜器上的图像与动物考古遗存共同证明，牛在古滇社会中占据着至高无上的地位。</span>
它们不仅是主要的肉食来源，更是财富的终极象征和宗教祭祀中不可或缺的核心祭品。
著名的“<span class="keyword">椎牛</span>”祭祀场景，反复出现在<span class="keyword">贮贝器</span>和<span class="keyword">铜鼓</span>之上。
拥有牛的数量，是衡量贵族财富与地位的重要标准。`,
                choices: [
                    { text: '前往河泊所，寻找更多关于都邑和行政的线索', nextScene: 'river_lake_station_intro' },
                    { text: '进入第二章：探索青铜艺术的巅峰', nextScene: 'chapter2_start' }
                ],
                evidenceGain: [],
                deepText: {
                    'insight_mixed_economy_power': '牛不仅是财富象征，更是宗教核心，这与混合农业一起，构成了古滇国强大的经济引擎。'
                }
            },
            'river_lake_station_intro': {
                text: `你来到了与<span class="keyword">石寨山</span>隔水相望的平坦区域——<span class="keyword">河泊所</span>遗址。
这里曾是古滇国的都邑所在，其后更成为西汉<span class="keyword">益州郡郡治</span>。
大量的建筑基址和遗迹，显示着这里曾经的繁华。`,
                choices: [
                    { text: '寻找汉代郡治的证据', nextScene: 'river_lake_station_han_evidence' },
                    { text: '尝试发掘古滇国的日常生活遗迹', nextScene: 'river_lake_station_daily_life' }
                ],
                evidenceGain: []
            },
            'river_lake_station_han_evidence': {
                text: `你在一处官署遗址发现了惊人的证据！
散落的泥土中，赫然出现了<span data-insight-key="insight_jimmy_policy">超过2000枚<span class="keyword">汉代封泥</span></span>，其上带有“<span class="keyword">益州太守章</span>”、“益州刺史”等汉代官职印文。
更不可思议的是，你还辨认出“<span class="keyword">滇王相印</span>”、“滇国相印”等滇国属官的印章！

这正是汉王朝在边疆采取“<span class="keyword">双轨制</span>”治理策略的实物证据！`,
                choices: [
                    { text: '深入理解汉代对古滇国的“羁縻”政策', nextScene: 'jimmy_policy' },
                    { text: '进入第二章：探索青铜艺术的巅峰', nextScene: 'chapter2_start' }
                ],
                evidenceGain: ['evidence_river_lake_han_seal', 'evidence_river_lake_dian_seal'],
                deepText: {
                    'insight_jimmy_policy': '这些汉代和滇国属官印章的同时出现，正是汉朝对滇国采取间接统治策略的铁证，在保留其传统权威的同时进行监督管理。'
                }
            },
            'jimmy_policy': {
                text: `“<span class="keyword">羁縻</span>”政策，这是汉王朝对边疆民族采取的一种灵活而务实的统治策略。
它意味着在保留滇王“复长其民”传统权威的同时，设立郡县进行监督下的藩属管理。
这种策略最大限度地减少了统治阻力，促成了一个强大的边疆王国平稳、渐进地融入帝国体系。

你再次感受到历史的智慧。`,
                choices: [
                    { text: '返回河泊所，寻找更多线索', nextScene: 'river_lake_station_intro' },
                    { text: '进入第二章：探索青铜艺术的巅峰', nextScene: 'chapter2_start' }
                ],
                evidenceGain: []
            },
            'river_lake_station_daily_life': {
                text: `在<span class="keyword">河泊所</span>的普通居住区，你发现了一些<span data-insight-key="insight_complex_social_struct"><span class="keyword">干栏式建筑</span>的遗迹</span>，与<span class="keyword">剑川海门口</span>遗址发现的木构桩居建筑如出一辙。
这表明普通民众的居住模式可能延续了这种对高原湖沼环境的完美适应。
虽然没有王陵的奢华，但这些遗迹透露出古滇人充满智慧的日常生活。`,
                choices: [
                    { text: '返回河泊所寻找行政证据', nextScene: 'river_lake_station_han_evidence' },
                    { text: '进入第二章：探索青铜艺术的巅峰', nextScene: 'chapter2_start' }
                ],
                evidenceGain: ['evidence_ganlan_houses'],
                deepText: {
                    'insight_complex_social_struct': '这些适应当地环境的干栏式建筑，是古滇社会基层的生动写照，与精英阶层的王陵都邑形成对比，展现了社会的多样性。'
                }
            },
            'chapter2_start': {
                text: `你步入一处模拟的古滇青铜器陈列室（或者说，你脑海中的“想象空间”）。
无数精美的青铜器在你眼前浮现，它们不仅是艺术品，更是一部部“写”在金属上的立体史书。
你决定先从最核心的铸造技术开始探究。`,
                choices: [
                    { text: '探究古滇青铜铸造技术', nextScene: 'bronze_tech' },
                    { text: '直接观察贮贝器上的视觉叙事', nextScene: 'zhubei_qiscenes_intro' }
                ],
                evidenceGain: []
            },
            'bronze_tech': {
                text: `古滇工匠掌握了世界顶级的青铜冶金技术，其工艺体系的复杂与精湛令人惊叹。
核心的便是——<span data-insight-key="insight_lost_wax_pinnacle"><span class="keyword">失蜡法铸造技术</span>（cire-perdue）</span>。
想象一下，工匠用蜂蜡雕塑出器物模型，再敷上泥料烘烤，让蜡熔化流出，形成空腔，最后灌入青铜液……
这种技术使得他们能够铸造出大量镂空、穿插、扭曲等复杂细节的三维立体雕塑。

除了失蜡法，他们还精通：
<span class="keyword">错金银工艺</span>：在青铜器表面嵌入金银细丝或薄片，形成华美纹饰。
<span data-insight-key="insight_lost_wax_pinnacle"><span class="keyword">鎏金工艺</span>：将金汞齐涂抹器表，加热使汞蒸发，形成纯金镀层，常用于突显尊贵地位。</span>
<span class="keyword">镀锡工艺</span>：在青铜器表面形成银亮且耐腐蚀的锡镀层。
<span class="keyword">线刻工艺</span>：以发丝般纤细流畅的线条，刻画复杂生动的图案，如李家山“<span class="keyword">虫兽纹铜臂甲</span>”。

这些技术共同铸就了古滇青铜的辉煌。`,
                choices: [
                    { text: '细看失蜡法如何铸就立体场景', nextScene: 'zhubei_qiscenes_intro' },
                    { text: '返回青铜器探索起点', nextScene: 'chapter2_start' }
                ],
                evidenceGain: ['evidence_lost_wax_tech', 'evidence_gilding_tech'],
                deepText: {
                    'insight_lost_wax_pinnacle': '古滇工匠的失蜡法和鎏金技术达到了古代世界的高峰，正是这些技术才使得贮贝器上精绝的立体场景成为可能，这远超简单的器物制作。'
                }
            },
            'zhubei_qiscenes_intro': {
                text: `<span class="keyword">贮贝器</span>，古滇文明最独特的器物之一，它不仅是财富容器，更是凝固的历史。
这些器盖上，通过<span class="keyword">失蜡法</span>铸造出异常复杂和生动的立体场景，如同“历史一瞬间的立体照片”。
对于<span data-insight-key="insight_visual_history_system">没有留下自身文字的文明而言，它们就是解读历史、社会、宗教和政治的“视觉档案”</span>。`,
                choices: [
                    { text: '观察“杀人祭柱场面贮贝器”', nextScene: 'zhubei_q_sacrifice' },
                    { text: '观察“诅盟场面贮贝器”', nextScene: 'zhubei_q_oath' },
                    { text: '观察“四牛鎏金骑士铜贮贝器”', nextScene: 'zhubei_q_knight' },
                    { text: '进入第三章：文明交汇的广域网络', nextScene: 'chapter3_start' }
                ],
                evidenceGain: ['evidence_killer_ritual_vessel', 'evidence_oath_ritual_vessel', 'evidence_knight_vessel', 'evidence_no_written_language'],
                deepText: {
                    'insight_visual_history_system': '贮贝器盖上这些丰富生动的立体场景，正是古滇国在没有文字的情况下，承载国家历史记忆、宗教仪式和意识形态的独特方式。'
                }
            },
            'zhubei_q_sacrifice': {
                text: `你小心翼翼地走近，眼前浮现出“<span class="keyword">杀人祭柱场面贮贝器</span>”的景象。
器盖的中央，一根高大的铜柱直插云霄，柱身盘绕着两条栩栩如生、鳞片分明的巨蛇。
铜柱下方，一名赤裸的牺牲者双手被反绑，无力地跪伏在地，似乎在等待着命运的裁决。他的表情被刻画得如此生动，以至于你几乎能听到他绝望的呼吸。

你注意到：
1. 铜柱前，一个手持巨斧的行刑者，肌肉隆起，正举起武器。
2. 柱旁，一群身着华服的女性跪坐成排，神情肃穆。
3. 场景的最高处，一顶由四人抬举的肩舆正缓缓驶来，肩舆中端坐着一位头戴高冠、服饰华丽的女性贵族，她似乎是这场仪式的核心。

你环视整个场景，细节丰富得让人叹为观止。那肩舆中的女性贵族，目光深邃，威严赫赫。她无疑是这场血腥仪式的掌控者。周围的跪坐女性、持斧者、以及那即将被献祭的生命，都围绕着她和铜柱构成的中心。这究竟是何种祭祀？<span data-insight-key="insight_female_theocracy_clues">为何女性在此扮演如此重要的角色？</span>蛇与柱又代表了什么？`,
                choices: [
                    { text: '思考人祭习俗的可能目的', nextScene: 'zhubei_q_sacrifice_purpose' },
                    { text: '思考女性在此仪式中的主导地位', nextScene: 'female_status_question' },
                    { text: '继续观察其他贮贝器', nextScene: 'zhubei_qiscenes_intro' }
                ],
                evidenceGain: ['evidence_female_ritual_lead'],
                deepText: {
                    'insight_female_theocracy_clues': '这件贮贝器是关键证据，女性贵族乘坐肩舆，俯瞰人祭，其核心地位并非偶然，极可能代表着神权的至高无上。'
                }
            },
            'zhubei_q_sacrifice_purpose': {
                text: `你沉思着人祭的可能目的。在古代文明中，人祭往往与农业丰收、战争胜利、祈福禳灾等重大事件相关。
这件器物为我们了解滇国宗教信仰提供了极其珍贵的第一手资料，它揭示了当地可能存在与农业丰收或战争胜利相关的、制度化的<span class="keyword">人祭习俗</span>，以及蛇与柱在其信仰体系中的核心图腾地位。`,
                choices: [
                    { text: '返回祭祀场景，思考女性地位', nextScene: 'zhubei_q_sacrifice' },
                    { text: '继续观察其他贮贝器', nextScene: 'zhubei_qiscenes_intro' }
                ],
                evidenceGain: []
            },
            'female_status_question': {
                text: `古滇青铜艺术所描绘的社会场景中，<span data-insight-key="insight_female_theocracy_clues">女性在重大宗教仪式中的核心地位反复出现。</span>
这与中原地区以男性为中心的<span class="keyword">宗法礼制</span>形成了鲜明对比。

你认为这代表了什么？`,
                choices: [
                    { text: '这可能是母系社会传统的遗存', nextScene: 'female_status_matrilineal' },
                    { text: '这可能揭示了一个以女性为核心的神权政治结构', nextScene: 'female_status_theocracy' }
                ],
                evidenceGain: [],
                deepText: {
                    'insight_female_theocracy_clues': '女性在最重要的仪式中居于领导地位，与中原文明形成鲜明对比，这强烈暗示了古滇国独特的政治宗教权力结构。'
                }
            },
            'female_status_matrilineal': {
                text: `如果这是<span class="keyword">母系社会</span>传统的遗存，那么在社会结构或血缘继嗣中，女性依然保留着重要的地位。
然而，随着国家形态的出现，纯粹的母系社会已不太可能。这更可能是一种在父系社会背景下，母系传统以某种特殊方式（如宗教权力）得以保留的体现。`,
                choices: [
                    { text: '思考神权政治结构的可能性', nextScene: 'female_status_theocracy' },
                    { text: '进入第三章：文明交汇的广域网络', nextScene: 'chapter3_start' }
                ],
                evidenceGain: []
            },
            'female_status_theocracy': {
                text: `这一个更具解释力的假说认为，古滇国可能存在一个以女性为核心的<span class="keyword">神权政治结构</span>。
这些场景中的女性并非简单的女贵族，而是掌握着与神灵沟通权力的女祭司，甚至是最高女祭司或女王。
她们的权力源于神，而非世俗。政治合法性建立在一个由女性主导的宗教体系之上，她们是人与神之间不可或替代的媒介。`,
                choices: [
                    { text: '进入第三章：文明交汇的广域网络', nextScene: 'chapter3_start' }
                ],
                evidenceGain: []
            },
            'zhubei_q_oath': {
                text: `你转向“<span class="keyword">诅盟场面贮贝器</span>”，这是迄今发现场面最宏大、人物最多（达127人）的贮贝器。
场景的核心是一座<span class="keyword">干栏式建筑</span>，平台上一位<span data-insight-key="insight_female_theocracy_clues">女性主祭人端坐于十六面<span class="keyword">铜鼓</span>组成的阵列之中。</span>
平台之下，一场规模盛大的典礼正在举行：<span class="keyword">椎牛刑马</span>、屠宰猪羊等大规模祭祀活动，以及奏乐、舞蹈和俘虏献祭。
众多的人物、作为政教合一权力象征的铜鼓阵列以及大规模的牲畜献祭，无不彰显了滇王强大的社会动员能力和至高无上的宗教、政治权威。
这很可能描绘了一场关乎国本的重大政治事件，如滇王即位、王国盟誓或出征前的祭天仪式。`,
                choices: [
                    { text: '思考女性在国本大典中的地位', nextScene: 'female_status_question' },
                    { text: '继续观察其他贮贝器', nextScene: 'zhubei_qiscenes_intro' }
                ],
                evidenceGain: ['evidence_female_ritual_lead'],
                deepText: {
                    'insight_female_theocracy_clues': '在这场关乎国本的盟誓大典中，女性主祭人端坐于铜鼓阵列中央，这无疑是其至高无上神权的又一力证。'
                }
            },
            'zhubei_q_knight': {
                text: `你来到“<span class="keyword">四牛鎏金骑士铜贮贝器</span>”前。
器盖上，四头体型硕大的公牛环绕着中心一位通体鎏金的骑士。
骑士头戴盔胄，身着铠甲，骑于战马之上，威风凛凛。
牛是财富的象征，四头健牛代表了墓主拥有的巨大财富。
而中心人物以<span class="keyword">鎏金</span>这种贵金属特殊处理，并置于场景中央，凸显其至高无上的地位，表明墓主是一位集军事权力与经济实力于一身的王室成员或大贵族。
整个场景是一幅关于社会等级与权力构成的宣言。`,
                choices: [
                    { text: '继续观察其他贮贝器', nextScene: 'zhubei_qiscenes_intro' },
                    { text: '进入第三章：文明交汇的广域网络', nextScene: 'chapter3_start' }
                ],
                evidenceGain: []
            },
            'chapter3_start': {
                text: `你从精美的青铜器中抽身，思绪开始转向古滇国与周边世界的联系。
它并非一个孤立的文明孤岛，而是一个地处古代亚洲大陆主要贸易与文化路线交汇点的国际化中心。
它的物质文化，如同一个技艺精湛的“文化编织者”，将来自四面八方的多元影响与自身强大的本土传统融合。`,
                choices: [
                    { text: '比较与周边青铜文化的“和而不同”', nextScene: 'regional_cultures' },
                    { text: '追溯古滇文明的深层文化源流', nextScene: 'cultural_origins' },
                    { text: '探寻南方丝绸之路的贸易动脉', nextScene: 'southern_silk_road' }
                ],
                evidenceGain: []
            },
            'regional_cultures': {
                text: `你通过比较不同器物类型学，勾勒出古滇国的文化坐标。
与越南北部的<span data-insight-key="insight_creolized_culture"><span class="keyword">东山文化</span></span>，二者在铜鼓基本形制和装饰母题上表现出高度一致性，但滇人创造性地改造了东山传入的器物。
与贵州赫章可乐遗址为代表的<span data-insight-key="insight_creolized_culture"><span class="keyword">夜郎文化</span></span>，则呈现显著的“和而不同”，夜郎独特的“<span class="keyword">套头葬</span>”、“<span class="keyword">覆面葬</span>”在滇文化中全然不见。
与北邻的<span class="keyword">巴蜀文化</span>，二者之间则在兵器类型（如柳叶形剑）和铸造技术上存在着密切的交流迹象。

这表明古滇国并非任何一种周边文化的简单复制或被动接受者。它身处一个区域性的技术与观念共享区，但它总是有选择地吸收，并用自身强大的文化语法进行重构。`,
                choices: [
                    { text: '追溯古滇文明的深层文化源流', nextScene: 'cultural_origins' },
                    { text: '探寻南方丝绸之路的贸易动脉', nextScene: 'southern_silk_road' }
                ],
                evidenceGain: ['evidence_dongshan_bronze', 'evidence_yelang_no_customs'],
                deepText: {
                    'insight_creolized_culture': '古滇文化与东山、夜郎等周边文化的异同，正是其主动选择性融合，形成独特身份的体现。'
                }
            },
            'cultural_origins': {
                text: `古滇文明的两大标志性元素——<span class="keyword">失蜡法</span>技术和<span data-insight-key="insight_creolized_culture"><span class="keyword">动物搏斗母题</span></span>，为你追溯其更深层的文化源流提供了线索。
动物搏斗母题，常见于滇国的青铜扣饰之上，其风格——充满动感的猛兽搏斗、捕食场景——与遥远的欧亚草原<span class="keyword">斯基泰艺术</span>有着惊人的相似性。
这一文化元素的传入路径，并非来自东方或南方，而是清晰地指向了**“<span class="keyword">藏彝走廊</span>”**。这条由中国西部一系列南北走向的山脉和河谷构成的天然通道，自新石器时代起，就是北方人群（包括古羌人等藏缅语族先民）向南迁徙的主要路线。
这系列证据共同将古滇国的文化源头，从<span class="keyword">司马迁</span>笔下晚近的“楚”，转向了更为古老和深远的、经由藏彝走廊南下的北方人群。`,
                choices: [
                    { text: '探寻南方丝绸之路的贸易动脉', nextScene: 'southern_silk_road' },
                    { text: '进入第四章：对独特性根源的深层探究', nextScene: 'chapter4_start' }
                ],
                evidenceGain: ['evidence_tibetan_yi_corridor'],
                deepText: {
                    'insight_creolized_culture': '动物搏斗母题通过藏彝走廊传入，是古滇文明多元文化源流的重要组成部分，而非单一来源。'
                }
            },
            'southern_silk_road': {
                text: `<span data-insight-key="insight_southern_silk_road_hub">古滇国是古代“<span class="keyword">南方丝绸之路</span>”</span>（又称“蜀身毒道”）上的关键枢纽。
你发现了<span data-insight-key="insight_southern_silk_road_hub">数以万计的天然<span class="keyword">海贝</span></span>，原产于遥远的印度洋和太平洋，这无疑是长途贸易网络的证据。
还有大量<span class="keyword">琥珀</span>、<span class="keyword">玛瑙</span>、<span class="keyword">玻璃珠</span>等奢侈品也频繁出现，指向了罗马帝国或印度。
作为交换，滇地及其周边向外输出本地特产，如<span class="keyword">《史记》</span>中<span class="keyword">张骞</span>出使大夏（今阿富汗北部）时发现的“<span class="keyword">蜀布</span>”和“<span class="keyword">邛竹杖</span>”。
古滇国正是凭借其优越的地理位置，掌控了这些关键通道，将异域的财富与奇珍转化为铸造其辉煌青铜文明的资本。`,
                choices: [
                    { text: '进入第四章：对独特性根源的深层探究', nextScene: 'chapter4_start' }
                ],
                evidenceGain: ['evidence_seashell_currency', 'evidence_foreign_luxuries', 'evidence_shubu_qiongzhuzhang'],
                deepText: {
                    'insight_southern_silk_road_hub': '海贝、异域奢侈品和外销特产共同勾勒出古滇国作为这条国际贸易动脉核心枢纽的形象，其繁荣得益于此。'
                }
            },
            'chapter4_start': {
                text: `在探究了古滇国的基石、青铜艺术和广域网络后，你开始思考其最引人注目的独特性——那些与中原文明截然不同的文化动因。
是什么塑造了它的独特？`,
                choices: [
                    { text: '探讨“技术—文字悖论”', nextScene: 'tech_text_paradox' },
                    { text: '深究女性在古滇社会的崇高地位', nextScene: 'female_status_main' },
                    { text: '重估“庄蹻开滇”的传说', nextScene: 'zhuangqiao_reassessment' }
                ],
                evidenceGain: []
            },
            'tech_text_paradox': {
                text: `古滇文明拥有世界顶级的青铜冶金技术，却未能发展出<span data-insight-key="insight_text_paradox_strategy">任何已知的本土<span class="keyword">文字系统</span></span>。
学界认为，<span class="keyword">贮贝器</span>盖上精细入微的写实场景扮演了文字的替代品。
但这或许并非简单的技术缺失，而是一种深思熟虑的社会政治策略。
统治精英可能有意地选择将国家的历史、神话、法律和宇宙观，编码进一套极其复杂、制作成本高昂、需要专门知识才能“阅读”的图像符号系统中。
对这些青铜“文本”的阐释权，被牢牢掌握在少数精英手中。它是一种比文字更有效、更具操控性的意识形态工具。`,
                choices: [
                    { text: '继续深究女性的崇高地位', nextScene: 'female_status_main' },
                    { text: '重估“庄蹻开滇”的传说', nextScene: 'zhuangqiao_reassessment' }
                ],
                evidenceGain: ['evidence_no_written_language'],
                deepText: {
                    'insight_text_paradox_strategy': '古滇国虽无文字，却能通过复杂的青铜视觉叙事，将知识和权力牢牢捆绑在精英手中，这是一种巧妙的统治策略。'
                }
            },
            'female_status_main': {
                text: `你回想起之前在<span class="keyword">贮贝器</span>上看到的场景：<span data-insight-key="insight_female_theocracy_clues">女性在重大宗教仪式中居于核心领导地位。</span>
这与中原地区以男性为中心的<span class="keyword">宗法礼制</span>形成了鲜明对比。

你再次审视这两种解释假说：`,
                choices: [
                    { text: '母系社会传统的遗存', nextScene: 'female_status_matrilineal_revisit' },
                    { text: '以女性为核心的神权政治结构', nextScene: 'female_status_theocracy_revisit' }
                ],
                evidenceGain: []
            },
            'female_status_matrilineal_revisit': {
                text: `这可能是<span class="keyword">母系社会</span>传统的遗存，反映了在社会结构或血缘继嗣中，女性依然保留着重要的地位。
然而，随着国家形态的出现，纯粹的母系社会已不太可能。这更可能是一种在父系社会背景下，母系传统以某种特殊方式（如宗教权力）得以保留的体现。`,
                choices: [
                    { text: '思考神权政治结构的可能性', nextScene: 'female_status_theocracy_revisit' },
                    { text: '重估“庄蹻开滇”的传说', nextScene: 'zhuangqiao_reassessment' }
                ],
                evidenceGain: []
            },
            'female_status_theocracy_revisit': {
                text: `这是一个更具解释力的假说，古滇国可能存在一个以女性为核心的<span class="keyword">神权政治结构</span>。
她们是掌握着与神灵沟通权力的女祭司，甚至是最高女祭司或女王。
她们的权力源于神，而非世俗。政治合法性很可能建立在一个由女性主导的宗教体系之上。`,
                choices: [
                    { text: '重估“庄蹻开滇”的传说', nextScene: 'zhuangqiao_reassessment' }
                ],
                evidenceGain: []
            },
            'zhuangqiao_reassessment': {
                text: `关于古滇国起源，<span class="keyword">司马迁</span><span class="keyword">《史记》</span>中“<span class="keyword">庄蹻开滇</span>”的传说流传了两千年。
然而，<span data-insight-key="insight_zhuangqiao_myth">现代考古学与古基因组学的双重证据对此提出了强有力的反驳。</span>

考古学的反驳：
1. <span data-insight-key="insight_zhuangqiao_myth">年代不符：古滇国文化源头可追溯至战国早期，远早于<span class="keyword">庄蹻</span>公元前279年的所谓“开滇”时间。</span>
2. <span data-insight-key="insight_zhuangqiao_myth">楚文化因素的缺失：早期滇国贵族墓葬中惊人地缺乏楚式器物。</span>

基因学的最终裁决：
2023年发表的古代DNA研究表明，古滇国先民的遗传构成，绝大部分源自<span data-insight-key="insight_yellow_river_ancestry">从<span class="keyword">黄河流域</span>南迁的粟作农业人群。</span>
研究未发现与楚文化核心区的南方人群有显著的基因交流。

结论是：“<span class="keyword">庄蹻开滇</span>”更可能是一种服务于汉代政治议程的“<span class="keyword">政治神话</span>”，而非真实历史。`,
                choices: [
                    { text: '进入第五章：古滇国的历史归宿', nextScene: 'chapter5_start' }
                ],
                evidenceGain: ['evidence_zhuangqiao_chronology', 'evidence_no_chu_artifacts', 'evidence_yellow_river_gene'],
                deepText: {
                    'insight_zhuangqiao_myth': '年代、文物和基因证据，多角度驳斥了“庄蹻开滇”的传统说法，证明它只是汉代为自身合法性服务的历史叙事。',
                    'insight_yellow_river_ancestry': '古基因组学发现的这一证据，彻底颠覆了滇人起源的传统认知，将其源头指向更为古老的北方粟作人群的南迁。'
                }
            },
            'chapter5_start': {
                text: `时光流转，汉王朝的铁蹄终究踏入了这片土地。
古滇国作为一个独特的实体，最终从历史和考古记录中消失了。
但这并非终结，而是一个融入与延续的故事。`,
                choices: [
                    { text: '回顾考古分期中的轨迹：从独立到汉化', nextScene: 'archaeological_phases' },
                    { text: '再次审视河泊所的实证：“双轨制”下的平稳过渡', nextScene: 'river_lake_station_han_evidence' },
                    { text: '思考古滇文化的延续性', nextScene: 'cultural_continuation' }
                ],
                evidenceGain: []
            },
            'archaeological_phases': {
                text: `<span class="keyword">石寨山</span>墓葬群的考古分期，清晰记录了古滇国融入统一多民族国家的完整历史轨迹：
早期（约战国）：随葬品以地方特色青铜器为主，风格独立自主。
中期（约西汉）：<span data-insight-key="insight_smooth_integration">铜铁合制品、汉式器物（铜镜、漆器、玉璧、铁弩机、汉钱）开始出现。</span>最重要的是，在6号墓中出土了纯金**“<span class="keyword">滇王之印</span>”**，这是古滇国臣服并被纳入汉王朝政治轨道的实体物证。其独特的蛇钮设计和未加“汉”或“归义”等字样的印文，正是汉朝对其采取“<span class="keyword">羁縻</span>”政策，政治上收编、文化上尊重的体现。
晚期（约西汉末至东汉初）：墓葬形制和随葬品组合已基本与中原同期墓葬趋同。兽形扣饰等地方特色消失。

这是一个渐进同化的过程。`,
                choices: [
                    { text: '再次审视河泊所的“双轨制”证据', nextScene: 'river_lake_station_han_evidence' },
                    { text: '思考古滇文化的延续性', nextScene: 'cultural_continuation' }
                ],
                evidenceGain: ['evidence_han_artifacts_mid', 'evidence_dian_king_seal'],
                deepText: {
                    'insight_smooth_integration': '汉式器物和“滇王之印”的出现，标志着古滇国在汉王朝灵活的“羁縻”政策下，开始了一个平稳渐进的融入过程，而非简单的被武力征服。'
                }
            },
            'cultural_continuation': {
                text: `东汉以后，古滇国作为一个独立的政治实体从历史中消逝了。
然而，其核心的文化元素，或可称之为“深层文化语法”，却表现出惊人的韧性，并融入了后世云南各民族的文化血脉之中。
例如，对牛的崇拜以及<span data-insight-key="insight_cultural_resilience"><span class="keyword">剽牛祭祀</span>的习俗</span>，在今天的彝族、白族、独龙族等多个云南少数民族的传统仪式中，依然清晰可见。
独龙族的“<span class="keyword">剽牛祭天</span>”仪式，其核心行为——以长矛刺牛献祭——与两千年前滇国青铜器上描绘的“<span class="keyword">椎牛</span>”场景如出一辙。

这种跨越千年的文化延续性表明，某些深植于民众世界观与信仰体系中的核心观念，得以代代相传。`,
                choices: [
                    { text: '完成考察，撰写最终报告', nextScene: 'ending' }
                ],
                evidenceGain: ['evidence_cultural_continuity'],
                deepText: {
                    'insight_cultural_resilience': '独龙族的剽牛祭天习俗，是古滇文化强大生命力的最好证明，尽管政治实体消亡，但其核心文化基因却以隐蔽而持久的方式传承至今。'
                }
            },
            'ending': {
                text: `你完成了对古滇文明的全面考察。
一个远比以往认知更复杂、更动态的古滇王国形象浮现在你的脑海中。
它并非史籍中被动等待中原“开化”的边陲孤岛，而是一个在中华文明“<span class="keyword">多元一体</span>”格局形成过程中，扮演了重要角色的、充满活力的区域文明中心。
你已提炼出它的社会根基、技术巅峰、广域互动网络、独特的文化动因，及其最终融入统一多民族国家的历史进程。
你的报告将为理解中华文明“<span class="keyword">多元一体</span>”格局波澜壮阔的形成史，提供一个来自西南边疆的、最为生动详实的范例。

恭喜你，年轻的史官，你成功重塑了失落的西南王国！
感谢你对这份报告的探索与学习。`,
                choices: [],
                evidenceGain: []
            },
        };

        // --- 游戏核心逻辑函数 ---
        // (所有JS函数与上一版完全一致，此处省略以节约篇幅)
        function animateTextDisplay(element, text, onComplete) { if (gameState.typingInterval) { clearInterval(gameState.typingInterval); } gameState.isTyping = true; element.innerHTML = ''; const wrapper = document.createElement('div'); wrapper.className = 'text-content-wrapper'; const tokens = text.split(/(<[^>]+>)/); let currentContent = ''; let tokenIndex = 0; const typingSpeed = 25; function type() { if (tokenIndex >= tokens.length) { finishTyping(); return; } let token = tokens[tokenIndex]; if (token.startsWith('<')) { currentContent += token; tokenIndex++; type(); } else { let charIndex = 0; function typeChar() { if (charIndex < token.length) { currentContent += token[charIndex]; wrapper.innerHTML = currentContent + '<span class="typing-cursor"></span>'; charIndex++; gameState.typingInterval = setTimeout(typeChar, typingSpeed); } else { tokenIndex++; type(); } } typeChar(); } } function finishTyping() { if (gameState.typingInterval) { clearInterval(gameState.typingInterval); } wrapper.innerHTML = text; element.innerHTML = ''; element.appendChild(wrapper); gameState.isTyping = false; if (onComplete) { onComplete(); } } element.onclick = () => { if (gameState.isTyping) { finishTyping(); element.onclick = null; } }; element.appendChild(wrapper); type(); }
        function displayScene(sceneId) { const scene = gameData[sceneId]; if (!scene) { return; } let newEvidenceFound = false; if (scene.evidenceGain && scene.evidenceGain.length > 0) { scene.evidenceGain.forEach(evidenceId => { if (!gameState.collectedEvidence.includes(evidenceId)) { gameState.collectedEvidence.push(evidenceId); newEvidenceFound = true; } }); if (newEvidenceFound) { gameState.newEvidencePending = true; deductionToggleButton.classList.add('new-evidence-alert'); } updateEvidenceJournal(); } let processedText = scene.text; if (gameState.activeInsight && scene.deepText) { const insightKey = gameState.activeInsight; processedText = processedText.replace(/<span data-insight-key="([^"]+)">/g, (match, key) => { const contentMatch = match.match(/>(.*?)<\/span>/); const content = contentMatch ? contentMatch[1] : ''; if (key === insightKey) { return `<span class="highlighted-by-insight" data-insight-key="${key}">${content}</span>`; } return `<span>${content}</span>`; }); } choicesList.innerHTML = ''; animateTextDisplay(gameDisplay, processedText, () => { scene.choices.forEach((choice, index) => { const listItem = document.createElement('li'); listItem.style.animationDelay = `${index * 0.1}s`; const button = document.createElement('button'); button.innerHTML = `<i class="fas fa-arrow-right"></i> ${choice.text}`; button.onclick = () => makeChoice(choice.nextScene); listItem.appendChild(button); choicesList.appendChild(listItem); }); if (scene.choices.length === 0) { gameDisplay.innerHTML += `<p style="text-align:center; margin-top:1.5rem; font-weight:bold;"><i class="fas fa-check-circle"></i> 【考察圆满完成】</p>`; deductionToggleButton.style.display = 'none'; } }); gameState.currentScene = sceneId; updateActiveInsightBar(); window.scrollTo({ top: 0, behavior: 'smooth' }); }
        function makeChoice(nextSceneId) { const existingPopup = document.querySelector('.deep-text-popup'); if (existingPopup) existingPopup.remove(); gameDisplay.onclick = null; const contentWrapper = gameDisplay.querySelector('.text-content-wrapper'); if(contentWrapper) { contentWrapper.style.animation = 'fadeOut 0.4s var(--easing-accelerate) forwards'; } choicesList.style.animation = 'fadeOut 0.4s var(--easing-accelerate) forwards'; setTimeout(() => { choicesList.style.animation = ''; displayScene(nextSceneId); }, 400); }
        function updateEvidenceJournal() { evidenceListElement.innerHTML = ''; const uniqueCollectedEvidence = [...new Set(gameState.collectedEvidence)]; uniqueCollectedEvidence.sort((a,b) => EVIDENCE_DATA[a].name.localeCompare(EVIDENCE_DATA[b].name, 'zh-CN')); uniqueCollectedEvidence.forEach(evidenceId => { const evidence = EVIDENCE_DATA[evidenceId]; if (evidence) { const listItem = document.createElement('li'); listItem.className = 'evidence-item'; listItem.dataset.evidenceId = evidenceId; listItem.innerHTML = `<div class="evidence-title-line"><i class="fas fa-chevron-right"></i><i class="fas ${evidence.icon || 'fa-star'} evidence-icon"></i><span>${evidence.name}</span></div><div class="evidence-detail-panel"><p>${evidence.description}</p></div>`; evidenceListElement.appendChild(listItem); } }); }
        function openDeductionBoard() { if (gameState.activeInsight) { gameState.activeInsight = null; updateActiveInsightBar(); displayScene(gameState.currentScene); } gameState.newEvidencePending = false; deductionToggleButton.classList.remove('new-evidence-alert'); deductionBoardModal.classList.add('visible'); renderDeductionBoard(); vibrate(50); }
        function closeDeductionBoard() { deductionBoardModal.classList.remove('visible'); gameState.selectedEvidenceForDeduction = []; }
        function renderDeductionBoard() { deductionEvidenceArea.innerHTML = ''; const uniqueCollectedEvidence = [...new Set(gameState.collectedEvidence)]; uniqueCollectedEvidence.sort((a,b) => EVIDENCE_DATA[a].name.localeCompare(EVIDENCE_DATA[b].name, 'zh-CN')); uniqueCollectedEvidence.forEach((evidenceId, index) => { const evidence = EVIDENCE_DATA[evidenceId]; if (evidence) { const card = document.createElement('div'); card.className = 'evidence-card'; card.dataset.evidenceId = evidenceId; card.innerHTML = `<i class="fas ${evidence.icon || 'fa-star'}"></i><div class="card-title">${evidence.name}</div><div class="card-description">${evidence.description}</div>`; if (gameState.selectedEvidenceForDeduction.includes(evidenceId)) card.classList.add('selected'); if (isItemFullyUsed(evidenceId)) card.classList.add('used'); card.onclick = () => { toggleItemSelectionForDeduction(evidenceId, card); vibrate(30); }; card.style.animation = `fadeInUp 0.5s var(--easing-standard) ${index * 0.03}s backwards`; deductionEvidenceArea.appendChild(card); } }); deductionInsightArea.innerHTML = ''; const uniqueUnlockedInsights = [...new Set(gameState.unlockedInsights)]; uniqueUnlockedInsights.sort((a,b) => INSIGHT_DATA[a].name.localeCompare(INSIGHT_DATA[b].name, 'zh-CN')); uniqueUnlockedInsights.forEach((insightId, index) => { const insight = INSIGHT_DATA[insightId]; if (insight) { const card = document.createElement('div'); card.className = 'insight-card'; card.dataset.insightId = insightId; card.innerHTML = `<i class="fas ${insight.icon || 'fa-glasses'}"></i><div class="card-title">${insight.name}</div><div class="card-description">${insight.description}</div>`; card.onclick = () => { toggleItemSelectionForDeduction(insightId, card); vibrate(30); }; if (gameState.selectedEvidenceForDeduction.includes(insightId)) card.classList.add('selected'); if (isItemFullyUsed(insightId)) card.classList.add('used'); const activateButton = document.createElement('button'); activateButton.innerHTML = `<i class="fas fa-eye"></i> 激活视角`; if (gameState.activeInsight === insightId) { activateButton.classList.add('active-insight-btn'); activateButton.innerHTML = `<i class="fas fa-check-circle"></i> 已激活`; } activateButton.onclick = (e) => { e.stopPropagation(); toggleInsightActivation(insightId); }; card.appendChild(activateButton); card.style.animation = `fadeInUp 0.5s var(--easing-standard) ${index * 0.03}s backwards`; deductionInsightArea.appendChild(card); } }); }
        function toggleItemSelectionForDeduction(itemId, cardElement) { const index = gameState.selectedEvidenceForDeduction.indexOf(itemId); if (index > -1) { gameState.selectedEvidenceForDeduction.splice(index, 1); cardElement.classList.remove('selected'); } else { gameState.selectedEvidenceForDeduction.push(itemId); cardElement.classList.add('selected'); } }
        function toggleInsightActivation(insightId) { if (gameState.activeInsight === insightId) { gameState.activeInsight = null; } else { gameState.activeInsight = insightId; if (!gameState.hasActivatedInsightBefore) { showFeedback('视角已激活！现在回到主文本，点击高亮区域以获得深度解读。', true); gameState.hasActivatedInsightBefore = true; } } vibrate(50); renderDeductionBoard(); displayScene(gameState.currentScene); closeDeductionBoard(); }
        async function checkDeduction() { if (gameState.selectedEvidenceForDeduction.length === 0) { showFeedback('请至少选择一项证据或洞察进行推断。', false); return; } let recipeMatch = null; for (const recipe of DEDUCTION_RECIPES) { const requiredItemsSet = new Set(recipe.requiredEvidence); const selectedItemsSet = new Set(gameState.selectedEvidenceForDeduction); if (requiredItemsSet.size === selectedItemsSet.size && [...requiredItemsSet].every(item => selectedItemsSet.has(item))) { recipeMatch = recipe; break; } } if (recipeMatch) { if (gameState.unlockedInsights.includes(recipeMatch.yieldsInsight)) { showFeedback('你已经解锁了这个洞察了！试试新的组合吧。', false); } else { deduceButton.disabled = true; await dramatizeDeduction(recipeMatch); gameState.unlockedInsights.push(recipeMatch.yieldsInsight); showFeedback(recipeMatch.text || `通过你的推断，解锁了新的洞察: ${INSIGHT_DATA[recipeMatch.yieldsInsight].name}！`, true); gameState.selectedEvidenceForDeduction = []; renderDeductionBoard(); deduceButton.disabled = false; } } else { showFeedback('当前的组合未能形成新的洞察，请重新尝试。', false); } }
        async function dramatizeDeduction(recipe) { vibrate([100, 50, 100]); return new Promise(resolve => { const selectedCards = []; gameState.selectedEvidenceForDeduction.forEach(itemId => { const card = deductionBoardModal.querySelector(`[data-evidence-id="${itemId}"], [data-insight-id="${itemId}"]`); if (card) selectedCards.push(card); }); const modalContentRect = deductionBoardModal.querySelector('.deduction-board-content').getBoundingClientRect(); const centerX = modalContentRect.left + modalContentRect.width / 2; const centerY = modalContentRect.top + modalContentRect.height / 2; selectedCards.forEach(card => card.classList.add('card-glow')); setTimeout(() => { selectedCards.forEach(card => { const cardRect = card.getBoundingClientRect(); card.classList.add('card-is-deducing'); card.style.position = 'fixed'; card.style.left = `${cardRect.left}px`; card.style.top = `${cardRect.top}px`; card.style.width = `${cardRect.width}px`; card.style.height = `${cardRect.height}px`; requestAnimationFrame(() => { card.style.transform = `translate(${centerX - cardRect.left - cardRect.width/2}px, ${centerY - cardRect.top - cardRect.height/2}px) scale(0)`; card.style.opacity = '0'; }); }); }, 300); setTimeout(() => { const newInsightId = recipe.yieldsInsight; const insight = INSIGHT_DATA[newInsightId]; const newInsightCard = document.createElement('div'); newInsightCard.className = 'insight-card new-insight-spawn'; newInsightCard.innerHTML = `<i class="fas ${insight.icon || 'fa-glasses'}"></i> <strong>${insight.name}</strong>`; newInsightCard.style.left = `${centerX}px`; newInsightCard.style.top = `${centerY}px`; document.body.appendChild(newInsightCard); requestAnimationFrame(() => { newInsightCard.style.opacity = '1'; newInsightCard.style.transform = 'translate(-50%, -50%) scale(1.2)'; }); setTimeout(() => { newInsightCard.remove(); resolve(); }, 1500); }, 800); }); }
        function showFeedback(message, isSuccess) { const existingFeedback = document.querySelector('.feedback-popup'); if (existingFeedback) existingFeedback.remove(); const feedbackDiv = document.createElement('div'); feedbackDiv.className = 'feedback-popup'; feedbackDiv.classList.add(isSuccess ? 'success' : 'failure'); feedbackDiv.innerHTML = `<i class="fas ${isSuccess ? 'fa-check-circle' : 'fa-times-circle'}"></i> ${message}`; document.body.appendChild(feedbackDiv); requestAnimationFrame(() => { feedbackDiv.style.opacity = '1'; feedbackDiv.style.transform = 'translateX(-50%) translateY(0)'; }); setTimeout(() => { feedbackDiv.style.opacity = '0'; feedbackDiv.style.transform = 'translateX(-50%) translateY(-20px)'; setTimeout(() => { feedbackDiv.remove(); }, 500); }, 3500); }
        function isItemFullyUsed(itemId) { const relevantRecipes = DEDUCTION_RECIPES.filter(recipe => recipe.requiredEvidence.includes(itemId)); if (relevantRecipes.length === 0) return true; return relevantRecipes.every(recipe => gameState.unlockedInsights.includes(recipe.yieldsInsight)); }
        function updateActiveInsightBar() { if (gameState.activeInsight) { const insight = INSIGHT_DATA[gameState.activeInsight]; activeInsightBar.querySelector('.insight-info').innerHTML = `<i class="fas ${insight.icon || 'fa-glasses'}"></i><span><strong>视角已激活：</strong>${insight.name}</span>`; activeInsightBar.style.display = 'flex'; } else { activeInsightBar.style.display = 'none'; } }
        function setupFooter() { const footer = document.getElementById('page-footer'); if (footer) { const currentYear = new Date().getFullYear(); footer.innerHTML = `<p>&copy; ${currentYear} 制作：老朱</p>`; } }
        function toggleTheme() { body.classList.toggle('dark-mode'); const isDarkMode = body.classList.contains('dark-mode'); localStorage.setItem('theme', isDarkMode ? 'dark' : 'light'); themeToggleButton.innerHTML = `<i class="fas ${isDarkMode ? 'fa-sun' : 'fa-moon'}"></i>`; vibrate(50); }
        function vibrate(pattern) { if ('vibrate' in navigator) { navigator.vibrate(pattern); } }
        // --- 事件监听器 ---
        startButton.addEventListener('click', initGame);
        deductionToggleButton.addEventListener('click', openDeductionBoard);
        themeToggleButton.addEventListener('click', toggleTheme);
        closeModalBtn.addEventListener('click', closeDeductionBoard);
        deduceButton.addEventListener('click', checkDeduction);
        closeInsightBarBtn.addEventListener('click', () => { if (gameState.activeInsight) { gameState.activeInsight = null; updateActiveInsightBar(); displayScene(gameState.currentScene); vibrate(30); } });
        window.addEventListener('click', (event) => { if (event.target === deductionBoardModal) closeDeductionBoard(); });
        gameDisplay.addEventListener('click', (event) => { const target = event.target; const existingPopup = gameDisplay.querySelector('.deep-text-popup'); if (existingPopup) existingPopup.remove(); if (target.classList.contains('highlighted-by-insight')) { vibrate(30); const insightKey = target.dataset.insightKey; const scene = gameData[gameState.currentScene]; if (insightKey && scene.deepText && scene.deepText[insightKey]) { const deepTextPopup = document.createElement('div'); deepTextPopup.className = 'deep-text-popup'; const insightName = INSIGHT_DATA[insightKey] ? `<strong>${INSIGHT_DATA[insightKey].name}</strong>` : ''; deepTextPopup.innerHTML = `${insightName}<p>${scene.deepText[insightKey]}</p>`; gameDisplay.appendChild(deepTextPopup); const targetRect = target.getBoundingClientRect(); const containerRect = gameDisplay.getBoundingClientRect(); deepTextPopup.style.left = `${targetRect.left - containerRect.left + targetRect.width / 2}px`; deepTextPopup.style.top = `${targetRect.top - containerRect.top}px`; requestAnimationFrame(() => { deepTextPopup.style.opacity = '1'; deepTextPopup.style.transform = 'translate(-50%, -110%)'; }); } } });
        evidenceListElement.addEventListener('click', (event) => {
            const titleLine = event.target.closest('.evidence-title-line');
            if (titleLine) {
                const parentItem = titleLine.parentElement;
                const detailPanel = parentItem.querySelector('.evidence-detail-panel');
                
                // 如果当前项未展开，则先关闭所有其他项
                if (!parentItem.classList.contains('is-expanded')) {
                    const allItems = evidenceListElement.querySelectorAll('.evidence-item');
                    allItems.forEach(item => {
                        if (item.classList.contains('is-expanded')) {
                            item.classList.remove('is-expanded');
                            item.querySelector('.evidence-detail-panel').style.maxHeight = null;
                        }
                    });
                }
                
                // 切换当前项
                parentItem.classList.toggle('is-expanded');
                
                if (parentItem.classList.contains('is-expanded')) {
                    detailPanel.style.maxHeight = detailPanel.scrollHeight + "px";
                    vibrate(30);
                } else {
                    detailPanel.style.maxHeight = null;
                }
            }
        });
        // 游戏初始化
        function initGame() { startScreen.style.display = 'none'; gameContainer.style.display = 'block'; displayScene(gameState.currentScene); deductionToggleButton.style.display = 'flex'; vibrate(50); }
        document.addEventListener('DOMContentLoaded', () => {
            const savedTheme = localStorage.getItem('theme');
            if (savedTheme === 'dark') {
                body.classList.add('dark-mode');
                themeToggleButton.innerHTML = `<i class="fas fa-sun"></i>`;
            } else {
                body.classList.remove('dark-mode');
                themeToggleButton.innerHTML = `<i class="fas fa-moon"></i>`;
            }
            gameContainer.style.display = 'none';
            startScreen.style.display = 'block';
            setupFooter();
        });
    </script>
</body>
</html>